package com.sky.config;

import com.sky.properties.AliOssProperties;
import com.sky.utils.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置类,用来创建AliOssUtil对象
 * 自定义的一个配置类,用来实现AliOssUtil.java这个工具类中属性的初始化
 * 配置类好像就是在 主程序启动的时候,,就会自动调用,,忘了回头看看spring_yue笔记
 * 配置类:  这意味着该类可以使用 @Bean 注解来定义 bean。那就是说专门用于注入到spring容器的
 * @author 岳海
 * @version 1.0
 * 312 / 356
 */
@Configuration //表示当前是一个配置类
@Slf4j
public class OssConfiguration {

    @Bean   //因为当前是配置类,这里通过@Bean 注入到容器后;当我们启动项目的时候,就会调用到下面这个方法,封装成AliOssUtil对象
    @ConditionalOnMissingBean   //这个注解用来保证,spring容器里面,只能有一个AliOssUtil对象;当没有这个Bean的时候再创建
    //创建方法,返回AliOssUtil封装好的对象
    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
        log.info("开始创建阿里云文件上传工具类对象:{}",aliOssProperties);

        //首先,要赋值的四个属性,是在application-dev.yml配置文件中的,所以要从这里获取到
        //而AliOssProperties.java是对应属性的一个属性类,所以这里直接传入的是AliOssProperties对象;

        //创建AliOssUtil对象实例
        return new AliOssUtil(aliOssProperties.getEndpoint(),
                aliOssProperties.getAccessKeyId(),
                aliOssProperties.getAccessKeySecret(),
                aliOssProperties.getBucketName());

    }


}
